﻿#ifndef DAABSTRACTPLUGIN_H
#define DAABSTRACTPLUGIN_H
#include <QtPlugin>
#include "DAPluginSupportGlobal.h"

/**
 * @brief 所有插件的基类
 *
 * 所有支持插件的库都需要实现以下导出函数
 * FCAbstractPlugin* plugin_create();
 * void plugin_destory(FCAbstractPlugin* p);
 */
class DAPLUGINSUPPORT_API DAAbstractPlugin
{
public:
    DAAbstractPlugin() {}
    virtual ~DAAbstractPlugin() {}

    //插件id
    virtual QString getIID() const = 0;

    /**
     * @brief 插件名
     * @return
     */
    virtual QString getName() const = 0;

    /**
     * @brief 插件版本
     * @return
     */
    virtual QString getVersion() const = 0;

    /**
     * @brief 插件描述
     * @return
     */
    virtual QString getDescription() const = 0;
};

//下面是插件导出的函数指针
typedef DAAbstractPlugin *(*FP_PluginCreate)();
typedef void (*FP_PluginDestory)(DAAbstractPlugin *);

#endif // FCABSTRACTPLUGIN_H
